#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>



//在屏幕上打印杨辉三角。
//1           i=0    5个空格    line-1
//1 1          i=1              line-1-i
//1 2 1
//1 3 3 1		2个空格
//1 4 6 4 1		1个空格
//1 5 10 10 5 1   0个空格        line-1-i
//……          line=6   

//首先要考虑到是一个矩阵，矩阵只打印出下三角，且矩阵的下三角的对角线（即i==j
//）都为1；矩阵的第一列全是1（j==0）;从i=2,j=2开始，在一定范围内的元素开始变的有规律性

//int main()
//{
//	int arr[20][20] = {0};
//	int i = 0;
//	int j = 0;
//	int line = 0;
//
//	scanf("%d",&line);
//	for (i = 0; i < line; i++)
//	{
//		for (j = 0; j < i; j++)
//		{
//			if (i == j || j == 0)
//			{
//				arr[i][j] = 1;
//			}
//			else
//			{
//				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
//			}
//		}
//	}
//
//	//打印
//	for (i = 0; i < line; i++)
//	{
//		for (j = 0; j < i; j++)
//		{
//			printf("%-2d ",arr[i][j]);
//		}
//		printf("\n");
//	}
//	return 0;
//}


//打印出真正的杨辉三角，先要搞定直角下的杨辉三角，再在直角的前面加空格
int main()
{
	int arr[20][20] = {0};
	int i = 0;
	int j = 0;
	int line = 0;

	scanf("%d",&line);
	for (i = 0; i < line; i++)
	{
		for (j = 0; j < i; j++)
		{
			if (i == j || j == 0)
			{
				arr[i][j] = 1;
			}
			else
			{
				arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
			}
		}
	}

	//打印
	for (i = 0; i < line; i++)
	{
		for (int k = 0; k <= line - 1 - i; k++)
		{
			printf("  ");
		}
		for (j = 0; j < i; j++)
		{

			printf("%3d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}


当使用free释放掉一个指针的内容后，不会把指针内容置空的，需要手动置空值

int* (*arr)[10]//是一个指针，指针的名字为arr，指针指向一个数组，数组中有10个元素
//每一个元素都是int*，是一个指向指针数组的指针

